import Request from 'luch-request' // 下载的插件
// import Request from 'luch-request' // 使用npm

const http = new Request({
  baseURL:'https://jsonplaceholder.typicode.com', 
  header: {
    'Content-Type':'application/json;charset=UTF-8',
  },
  method: 'POST',// 默认POST
  custom: { // 自定义参数
    showMsg: false, // 请求成功是否展示msg
    auth: true, // true就传token: 登录token
    type: 'public', // 接口类型: 默认public
  },
});

http.interceptors.request.use((config) => { // 可使用async await 做异步操作

  if(config.custom.auth){
    config.header.token = uni.getStorageSync('userInfo').token
  }
  
  uni.getNetworkType({
    success: function (res) {
      if(res.networkType == 'none'){
        uni.showToast({icon:'none', title:'请检查网络设置'})
      };
    }
  });
  // 演示custom 用处
  // if (config.custom.auth) {
  //   config.header.token = 'token'
  // }
  // if (config.custom.loading) {
  //  uni.showLoading()
  // }
  /**
   /* 演示
   if (!token) { // 如果token不存在，return Promise.reject(config) 会取消本次请求
      return Promise.reject(config)
    }
   **/
  return config
}, config => { // 可使用async await 做异步操作
  return Promise.reject(config)
})

http.interceptors.response.use((response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/
  let type = response.config.custom.type // 演示自定义参数的作用
  let showMsg = response.config.custom.showMsg // 演示自定义参数的作用
  console.log(response.config.custom,JSON.parse(JSON.stringify(response)));
  if (response.statusCode === 200) {
    if(showMsg) msg(response.errMsg)
    return response.data
  } else if (response.statusCode !== 200) {
    msg(response.errMsg)
    return response
    // return Promise.reject(response) //return Promise.reject 可使promise状态进入catch
  }
  return response
}, (response) => { /*  对响应错误做点什么 （statusCode !== 200）*/
  console.log(response)
  return Promise.reject(response)
})

  
const msg = (title) => {
  uni.showToast({icon:'none', title})
}

export default http;
